#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
#define Yes cout<<"YES\n"
#define No cout<<"NO\n"
#define all(a) a.begin(),a.end()
#define pb push_back
#define endl '\n'
//#define int ll
const ll mod=1e9+7;const int M=2e5+5;const int N=2e5+5;
int dx[] = {-1, 1, 0, 0};int dy[] = {0, 0, -1, 1};
struct node
{
int op,l,r;
};
void solve()
{
int n,q,m;cin>>n>>q>>m;
vector<int> a(n+1,0);
for(int i=1;i<=n;i++) cin>>a[i];
vector<node> opp;
while(q--)
{
node tmp;cin>>tmp.op>>tmp.l>>tmp.r;
opp.pb(tmp);
}
reverse(all(opp));
while(m--)
{
int pos;cin>>pos;
for(auto x:opp)
{
if(x.op==1&&x.l<=pos&&x.r>=pos)
{
if(pos>x.l) pos--;
else pos=x.r;
}
else if(x.op==2&&x.l<=pos&&x.r>=pos)
{
pos=x.l+x.r-pos;
}
}
cout<<a[pos]<<endl;
}
}
signed main()
{
ios::sync_with_stdio(0);cin.tie(0);
int __;
__=1;
//cin>>__;
while(__--)
{
solve();
}
}
442. Find All Duplicates in an Array | 437. Path Sum III |
436. Find Right Interval | 435. Non-overlapping Intervals |
406. Queue Reconstruction by Height | 380. Insert Delete GetRandom O(1) |
332. Reconstruct Itinerary | 368. Largest Divisible Subset |
377. Combination Sum IV | 322. Coin Change |
307. Range Sum Query - Mutable | 287. Find the Duplicate Number |
279. Perfect Squares | 275. H-Index II |
274. H-Index | 260. Single Number III |
240. Search a 2D Matrix II | 238. Product of Array Except Self |
229. Majority Element II | 222. Count Complete Tree Nodes |
215. Kth Largest Element in an Array | 198. House Robber |
153. Find Minimum in Rotated Sorted Array | 150. Evaluate Reverse Polish Notation |
144. Binary Tree Preorder Traversal | 137. Single Number II |
130. Surrounded Regions | 129. Sum Root to Leaf Numbers |
120. Triangle | 102. Binary Tree Level Order Traversal |